from bs4 import BeautifulSoup

html_text = """<html>
    <head>
        <title>这是一个构造的测试页面</title>
    </head>
    <body>
        <div class="title">
            <b>页面标题</b>
        </div>
        <div class="story">这里给了几个网站：
			<a href="https://www.baidu.com" class="baidu index" id="link1">百度</a>,
			<a href="https://www.taobao.com" class="taobao" id="link2">淘宝</a>,
			<a href="https://www.jd.com" class="jindong" id="link3">京东</a>.
			<div>
				<a href="https://www.bilibili.com/" class="bilibili index" id="link4">哔哩哔哩</a>
			</div>
        </div>

        <p class="story">...</p>
    </body>
</html>"""

# 实例化解析对象
soup = BeautifulSoup(html_text, 'lxml')

# # 匹配所有a节点，返回的是一个可迭代对象，打印是列表的形式
# a_soups = soup.find_all(name='a')
# print(a_soups)
# print(type(a_soups))
# for a in a_soups:
#     print(a)

# # attrs：按照属性名和属性值搜索 tag 标签,class属性，只要能匹配的上一个即可
# a_soup = soup.find_all(name='a', attrs={"class": 'index'})
# print(a_soup)

# # recursive=False设置只获取子节点，不取更深的节点
# div_soup = soup.find(name='div', class_='story')
# a_soups = div_soup.find_all(name='a', recursive=False) # recursive=False设置只获取子节点，不取更深的节点
# print(a_soups)

# # text/string  通过文本值筛选
# # a_soup = soup.find_all(name='a', text="哔哩哔哩")  # text可以正常运行，但是代码会报waring，推荐使用string
# a_soup = soup.find_all(name='a', string="哔哩哔哩")  # text可以正常运行，但是代码会报waring，推荐使用string
# print(a_soup)

# - limit 参数可以限制返回结果的数量。
a_soup = soup.find_all(name='a', limit=2)
print(a_soup)